package com.ruoyi.platform.domain.request;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @program: RuoYi-Vue
 * @description: 巡检台账请求实体类
 * @author: drgon
 * @create: 2025-9-18 40：59
 */
public class InspectionLedgerRequest implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 关键字
     */
    private String key;

    /**
     * 系统编号
     */
    private Long storeId;

    /**
     * 系统编号
     */
    private Long storeLocationId;

    /**
     * 系统编号
     */
    private Long equipmentId;

    /**
     * 指令执行结果编号
     */
    private Long commandId;

    /**
     * 系统编号
     */
    private Long commandResultId;

    /**
     * 仓库名称
     */
    @Excel(name = "仓库名称")
    private String storeName;

    /**
     * 仓库编码
     */
    @Excel(name = "仓库编码")
    private String storeCode;

    /**
     * 监控设备名称
     */
    @Excel(name = "监控设备名称")
    private String equipmentName;

    /**
     * 监控设备编码
     */
    @Excel(name = "监控设备编码")
    private String equipmentCode;

    /**
     * 仓库名称
     */
    @Excel(name = "仓库名称")
    private String storeLocationName;

    /**
     * 仓位编码
     */
    @Excel(name = "仓位编码")
    private String storeLocationCode;

    /**
     * 监控设备类型
     */
    @Excel(name = "监控设备类型")
    private Long equipmentType;

    /**
     * 监控设备是否启用
     */
    @Excel(name = "监控设备是否启用")
    private Long equipmentUseStatus;


    /**
     * 监控设备开启自动巡检
     */
    @Excel(name = "监控设备开启自动巡检")
    private Long equipmentUseInspection;

    /**
     * 监控设备开启异常接收
     */
    @Excel(name = "监控设备开启异常接收")
    private Long equipmentUseWarning;

    /**
     * 是否开启数字孪生异常推送
     */
    @Excel(name = "监控设备开启数字孪生异常推送")
    private Long equipmentUseWarningPush;

    /**
     * 仓位状态
     */
    @Excel(name = "仓位状态")
    private Long storeLocationStatus;

    /**
     * 是否启用
     */
    @Excel(name = "仓位是否启用")
    private Long storeUseStatus;

    /**
     * 是否开启自动巡检
     */
    @Excel(name = "仓位开启自动巡检")
    private Long storeUseInspection;

    /**
     * 是否开启异常接收
     */
    @Excel(name = "仓位开启异常接收")
    private Long storeUseWarning;

    /**
     * 是否开启数字孪生异常推送
     */
    @Excel(name = "仓位开启数字孪生异常推送")
    private Long storeUseWarningPush;

    /**
     * 指令类型
     */
    @Excel(name = "指令类型")
    @NotNull(message = "指令类型不能为空")
    private Integer commandType;

    /**
     * 预警状态
     */
    @Excel(name = "预警状态")
    private Integer inspectionWarningStatus;

    /**
     * 巡检时仓位状态
     */
    @Excel(name = "巡检时仓位状态")
    private Integer inspectionStatus;

    /**
     * 指令执行开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
    @Excel(name = "指令执行开始时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
    private Date executeStartTime;

    /**
     * 指令执行结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
    @Excel(name = "指令执行结束时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
    private Date executeEndTime;

    /**
     * 指令行状态
     */
    @Excel(name = "指令行状态")
    private Integer executionStatus;


    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public Long getStoreId() {
        return storeId;
    }

    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }

    public Long getStoreLocationId() {
        return storeLocationId;
    }

    public void setStoreLocationId(Long storeLocationId) {
        this.storeLocationId = storeLocationId;
    }

    public Long getEquipmentId() {
        return equipmentId;
    }

    public void setEquipmentId(Long equipmentId) {
        this.equipmentId = equipmentId;
    }

    public Long getCommandId() {
        return commandId;
    }

    public void setCommandId(Long commandId) {
        this.commandId = commandId;
    }

    public Long getCommandResultId() {
        return commandResultId;
    }

    public void setCommandResultId(Long commandResultId) {
        this.commandResultId = commandResultId;
    }

    public String getStoreName() {
        return storeName;
    }

    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }

    public String getStoreCode() {
        return storeCode;
    }

    public void setStoreCode(String storeCode) {
        this.storeCode = storeCode;
    }

    public String getEquipmentName() {
        return equipmentName;
    }

    public void setEquipmentName(String equipmentName) {
        this.equipmentName = equipmentName;
    }

    public String getEquipmentCode() {
        return equipmentCode;
    }

    public void setEquipmentCode(String equipmentCode) {
        this.equipmentCode = equipmentCode;
    }

    public String getStoreLocationName() {
        return storeLocationName;
    }

    public void setStoreLocationName(String storeLocationName) {
        this.storeLocationName = storeLocationName;
    }

    public String getStoreLocationCode() {
        return storeLocationCode;
    }

    public void setStoreLocationCode(String storeLocationCode) {
        this.storeLocationCode = storeLocationCode;
    }

    public Long getEquipmentType() {
        return equipmentType;
    }

    public void setEquipmentType(Long equipmentType) {
        this.equipmentType = equipmentType;
    }

    public Long getEquipmentUseStatus() {
        return equipmentUseStatus;
    }

    public void setEquipmentUseStatus(Long equipmentUseStatus) {
        this.equipmentUseStatus = equipmentUseStatus;
    }

    public Long getEquipmentUseInspection() {
        return equipmentUseInspection;
    }

    public void setEquipmentUseInspection(Long equipmentUseInspection) {
        this.equipmentUseInspection = equipmentUseInspection;
    }

    public Long getEquipmentUseWarning() {
        return equipmentUseWarning;
    }

    public void setEquipmentUseWarning(Long equipmentUseWarning) {
        this.equipmentUseWarning = equipmentUseWarning;
    }

    public Long getEquipmentUseWarningPush() {
        return equipmentUseWarningPush;
    }

    public void setEquipmentUseWarningPush(Long equipmentUseWarningPush) {
        this.equipmentUseWarningPush = equipmentUseWarningPush;
    }

    public Long getStoreLocationStatus() {
        return storeLocationStatus;
    }

    public void setStoreLocationStatus(Long storeLocationStatus) {
        this.storeLocationStatus = storeLocationStatus;
    }

    public Long getStoreUseStatus() {
        return storeUseStatus;
    }

    public void setStoreUseStatus(Long storeUseStatus) {
        this.storeUseStatus = storeUseStatus;
    }

    public Long getStoreUseInspection() {
        return storeUseInspection;
    }

    public void setStoreUseInspection(Long storeUseInspection) {
        this.storeUseInspection = storeUseInspection;
    }

    public Long getStoreUseWarning() {
        return storeUseWarning;
    }

    public void setStoreUseWarning(Long storeUseWarning) {
        this.storeUseWarning = storeUseWarning;
    }

    public Long getStoreUseWarningPush() {
        return storeUseWarningPush;
    }

    public void setStoreUseWarningPush(Long storeUseWarningPush) {
        this.storeUseWarningPush = storeUseWarningPush;
    }

    public Integer getCommandType() {
        return commandType;
    }

    public void setCommandType(Integer commandType) {
        this.commandType = commandType;
    }

    public Integer getInspectionWarningStatus() {
        return inspectionWarningStatus;
    }

    public void setInspectionWarningStatus(Integer inspectionWarningStatus) {
        this.inspectionWarningStatus = inspectionWarningStatus;
    }

    public Integer getInspectionStatus() {
        return inspectionStatus;
    }

    public void setInspectionStatus(Integer inspectionStatus) {
        this.inspectionStatus = inspectionStatus;
    }

    public Date getExecuteStartTime() {
        return executeStartTime;
    }

    public void setExecuteStartTime(Date executeStartTime) {
        this.executeStartTime = executeStartTime;
    }

    public Date getExecuteEndTime() {
        return executeEndTime;
    }

    public void setExecuteEndTime(Date executeEndTime) {
        this.executeEndTime = executeEndTime;
    }

    public Integer getExecutionStatus() {
        return executionStatus;
    }

    public void setExecutionStatus(Integer executionStatus) {
        this.executionStatus = executionStatus;
    }

    @Override
    public String toString() {
        return "InspectionLedgerRequest{" +
                "key='" + key + '\'' +
                ", storeId=" + storeId +
                ", storeLocationId=" + storeLocationId +
                ", equipmentId=" + equipmentId +
                ", commandId=" + commandId +
                ", commandResultId=" + commandResultId +
                ", storeName='" + storeName + '\'' +
                ", storeCode='" + storeCode + '\'' +
                ", equipmentName='" + equipmentName + '\'' +
                ", equipmentCode='" + equipmentCode + '\'' +
                ", storeLocationName='" + storeLocationName + '\'' +
                ", storeLocationCode='" + storeLocationCode + '\'' +
                ", equipmentType=" + equipmentType +
                ", equipmentUseStatus=" + equipmentUseStatus +
                ", equipmentUseInspection=" + equipmentUseInspection +
                ", equipmentUseWarning=" + equipmentUseWarning +
                ", equipmentUseWarningPush=" + equipmentUseWarningPush +
                ", storeLocationStatus=" + storeLocationStatus +
                ", storeUseStatus=" + storeUseStatus +
                ", storeUseInspection=" + storeUseInspection +
                ", storeUseWarning=" + storeUseWarning +
                ", storeUseWarningPush=" + storeUseWarningPush +
                ", commandType=" + commandType +
                ", inspectionWarningStatus=" + inspectionWarningStatus +
                ", inspectionStatus=" + inspectionStatus +
                ", executeStartTime=" + executeStartTime +
                ", executeEndTime=" + executeEndTime +
                ", executionStatus=" + executionStatus +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof InspectionLedgerRequest)) return false;
        InspectionLedgerRequest that = (InspectionLedgerRequest) o;
        return Objects.equals(getKey(), that.getKey()) && Objects.equals(storeId, that.storeId) && Objects.equals(storeLocationId, that.storeLocationId) && Objects.equals(equipmentId, that.equipmentId) && Objects.equals(commandId, that.commandId) && Objects.equals(commandResultId, that.commandResultId) && Objects.equals(storeName, that.storeName) && Objects.equals(storeCode, that.storeCode) && Objects.equals(equipmentName, that.equipmentName) && Objects.equals(equipmentCode, that.equipmentCode) && Objects.equals(storeLocationName, that.storeLocationName) && Objects.equals(storeLocationCode, that.storeLocationCode) && Objects.equals(equipmentType, that.equipmentType) && Objects.equals(equipmentUseStatus, that.equipmentUseStatus) && Objects.equals(equipmentUseInspection, that.equipmentUseInspection) && Objects.equals(equipmentUseWarning, that.equipmentUseWarning) && Objects.equals(equipmentUseWarningPush, that.equipmentUseWarningPush) && Objects.equals(storeLocationStatus, that.storeLocationStatus) && Objects.equals(storeUseStatus, that.storeUseStatus) && Objects.equals(storeUseInspection, that.storeUseInspection) && Objects.equals(storeUseWarning, that.storeUseWarning) && Objects.equals(storeUseWarningPush, that.storeUseWarningPush) && Objects.equals(commandType, that.commandType) && Objects.equals(inspectionWarningStatus, that.inspectionWarningStatus) && Objects.equals(inspectionStatus, that.inspectionStatus) && Objects.equals(executeStartTime, that.executeStartTime) && Objects.equals(executeEndTime, that.executeEndTime) && Objects.equals(executionStatus, that.executionStatus);
    }

    @Override
    public int hashCode() {
        return Objects.hash(getKey(), storeId, storeLocationId, equipmentId, commandId, commandResultId, storeName, storeCode, equipmentName, equipmentCode, storeLocationName, storeLocationCode, equipmentType, equipmentUseStatus, equipmentUseInspection, equipmentUseWarning, equipmentUseWarningPush, storeLocationStatus, storeUseStatus, storeUseInspection, storeUseWarning, storeUseWarningPush, commandType, inspectionWarningStatus, inspectionStatus, executeStartTime, executeEndTime, executionStatus);
    }

}
